package com.hc.demo_api820.exception;

import com.hc.demo_api820.dto.ResultResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 全局异常处理器
 * */
@ControllerAdvice
public class GlobalExceptionHandler  {  //Cortroller
    //自由发挥：自己随便写处理异常的代码
    //当然也要遵守一些小小的规定
    //ResultResponse统一处理类型
    //这个方法处理体检App的业务异常
    @ResponseBody
    @ExceptionHandler(TijianException.class)
    public ResultResponse handlerTijianException(TijianException e){
        ResultResponse resultResponse = null;

        //打印异常信息
        System.out.println("e:"+e.getMessage());

        e.printStackTrace();

        //把异常通知给前端
        resultResponse=new ResultResponse(e.getExCode(),e.getMessage(),null);

        return resultResponse;
    }

    //兜底的方法，起那么处理不了异常，交给当前方法处理
    @ResponseBody
    @ExceptionHandler(Exception.class)
    public ResultResponse hanlerAllException(Exception e){
        ResultResponse resultResponse = null;

        //打印
        System.out.println("e:"+e.getMessage());
        e.printStackTrace();

        resultResponse=new ResultResponse(TijianExceptionEnum.SYSTEM_ERROR.getEnCode(), TijianExceptionEnum.SYSTEM_ERROR.getEnMessage(),null);

        return resultResponse;
    }
}
